快速上手教程

您所在的位置:网站首页 mill 91安装 快速上手教程

快速上手教程

2024-07-17 16:36:11| 来源: 网络整理| 查看: 265

快速上手教程源代码结构

项目 Repository 建立在 Scala 框架下, 其中主要的的目录和文件如下

. ├── debug/ # 处理器核测试脚本 ├── fpga/ # 用于FPGA平台调试运行的相关文件 ├── project/ # 构建SBT项目的相关配置文件 ├── src/ # 处理器核源代码 ├── script/ # 其他脚本文件 ├── tool/ # 其他工具 ├── Makefile └── README.md # 项目介绍

./src 下的文件是项目最核心的处理器核源代码, 简要说明如下

./src ├── main/scala │ ├── bus # 总线相关 │ ├── device # 输入输出设备相关 │ ├── nutcore # 核心相关 │ ├── sim # 仿真相关 │ ├── system # 外围系统 │ ├── top # 项目顶层文件及配置文件 │ └── utils # 工具相关 └── test ├── csrc # C++测试文件, 主要用于Verilator仿真项目构建 ├── vsrc # Verilog测试文件 └── scala # Scala测试文件准备工作

推荐在 Ubuntu 18.04 或者 Debian 10 以上的 Linux 发行版环境中运行本项目.

安装 Mill

请参考该指南的Manual部分

安装 GNU RISCV 工具链

Ubuntu 18.04 或者 Debian 10 以上:

sudo apt-get install g++-riscv64-linux-gnu

其他平台

选项一: 使用我们预编译的工具链 (未测试)

选项二: 从源文件编译安装工具链

安装 Verilator

Ubuntu 18.04 或者 Debian 10 以上:

sudo apt-get install verilator

其他平台

参考官方教程从源文件编译安装

关联项目

运行和测试 NutShell 核心还需要一些关联项目的辅助, 来提供核上运行时, 操作系统, 以及行为对比验证等

NEMU

NEMU (NJU Emulator) 是一个简单但完整的全系统模拟器, 目前支持 x86, mips32, riscv32, riscv64 指令集. 在一生一芯项目中, NEMU 作为一个重要的基础设施, 被用来与处理器核作对比仿真验证.

NEMU 的源代码参见这里.

AM

AM (Abstract Machine) 是一个向程序提供运行时环境的包装库, 它提供了一个面向裸金属的运行时环境, 把程序与体系结构进行了解耦. 我们只要在 AM 的框架下编写好程序, 就能方便地运行在 NEMU 和 Nutshel 之上. AM 在一生一芯项目中被用来包装一系列测试程序从而验证核心的正确性.

AM 项目的完整源码由于课程设计需求暂不公开, 我们也提供了一份 NutShell 特供版本在此处. 它的安装运行过程和相关概念请参考南京大学计算机系统基础课程的PA2部分.

RISCV-PK & RISCV-LINUX

RISCV-PK (The RISC-V Proxy Kernel) 是一个轻量的 RISCV 运行时环境, 它能够将搭载程序的 I/O 系统请求代理到主机来完成. 我们项目中没有这样的需求, 而是主要使用了其中的 BBL (Berkeley Boot Loader) 部分, 它为 Linux 内核的运行提供预先准备, 包括注册 M mode 中断处理请求, 读取并解析设备树, 设置相应 CSR 寄存器值等等. 当 BBL 运行结束, 它就会将控制器正式交给内核.

OSCPU 项目组中的 riscv-linux 工程内置了 BBL, 也包含了一个最精简的 Linux 内核, ELF文件仅有1.4MB 大小, 初始 init 为一个输出 Hello World 的小程序.

仿真运行流程

请参考此处的说明来使用我们预编译好的映像文件进行处理器核的仿真运行. (推荐)

如果要手动编译运行映像, 我们以 Microbench 作为例子进行说明.

Microbench

Microbench 是一个建立在 AM 之上的基准测试程序, 位置在 nexus-am/apps/microbench/.

准备好 NutShell, NEMU, AM 这三个项目, 做好 NutShell 的 Setting 工作

设置三个环境变量

NEMU_HOME = NEMU 项目的绝对路径

NUTSHELL_HOME = NutShell 项目的绝对路径

AM_HOME = AM 项目的绝对路径

进入 nexus-am/apps/microbench/, 执行

make ARCH=riscv64-nemu mainargs=test run

该命令首先会使用 AM 运行时框架编译 Microbench 源代码, 形成一个内存映像二进制文件 (.bin), 然后让该文件载入进 NEMU 模拟器的内存中运行, 最后可以在终端中看到相应的输出以及最后的 Pass 字样.

其中, ARCH 指定 AM 的编译条件, - 之前部分指示指令集, - 之后部分指示运行平台; mainargs 指定目标程序的传入参数, 在 Microbench 中可以传入 "test", "train", "ref" 来设定测试规模.

进入 nexus-am/apps/microbench/, 执行

make ARCH=riscv64-nutshell mainargs=test run

该命令与上面唯一的不同是让 Microbench 运行到了 NutShell 的仿真平台之上, 如果顺利的话可以看到终端输出了和 NEMU 上一致的内容(除了运行时间有差异).

值得注意的是, 第一次运行该命令会从头开始 build NutShell 项目, 通常第一次 build 的时间会非常漫长, 这是因为 Mill 工具会下载依赖的 Scala/Java 包, 这些包在国内的网络环境中下载速度很慢. 一旦第一次构建成功后, 后续就不会重复下载了, build 速度会快很多.

上一页NutShell (果壳) 处理器核下一页取指级

最后更新于1年前



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭